package org.ceteca.explica.core.warehouse;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import org.ceteca.explica.core.ExplicaException;
import org.ceteca.explica.core.util.OperationResult;

import org.ceteca.explica.core.warehouse.ProductGroupOT;
import org.ceteca.explica.core.warehouse.ProductOT;

public interface WarehouseManager extends Remote {
	public List queryProducts(String fieldId, String value) throws RemoteException, ExplicaException;
	public OperationResult delProduct(Long idProduct) throws RemoteException, ExplicaException;
	public OperationResult delProducts(ArrayList<Long> lSelProducts) throws RemoteException, ExplicaException;
	public OperationResult saveProduct(ProductOT product) throws RemoteException, ExplicaException;
	public ProductOT getProduct(Long idProduct) throws RemoteException, ExplicaException;
	
	public List queryProductGroups(String fieldId, String value) throws RemoteException, ExplicaException;
	public OperationResult delProductGroup(Long idGroup) throws RemoteException, ExplicaException;
	public OperationResult delProductGroups(ArrayList<Long> lSelGroups) throws RemoteException, ExplicaException;
	public OperationResult saveProductGroup(ProductGroupOT group) throws RemoteException, ExplicaException;
	public ProductGroupOT getProductGroup(Long idGroup) throws RemoteException, ExplicaException;
	public long getNextProductGroupId() throws RemoteException, ExplicaException;
	public void resetNextProductGroupId(long idGroup) throws RemoteException, ExplicaException;
	
	public List queryMeasureUnits(String fieldId, String value) throws RemoteException, ExplicaException;
	public OperationResult delMeasureUnit(Long idMeasureUnit) throws RemoteException, ExplicaException;
	public OperationResult delMeasureUnits(ArrayList<Long> lSelMeasureUnits) throws RemoteException, ExplicaException;
	public OperationResult saveMeasureUnit(MeasureUnitOT measureUnit) throws RemoteException, ExplicaException;
	public MeasureUnitOT getMeasureUnit(Long idMeasureUnit) throws RemoteException, ExplicaException;
}